package com.example.mychatroom.serviceImpl;

import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

/**
 * @className: TestWebSocketAPI
 * @author: 十三
 * @description: WebSocket测试接口（文本WebSocket)
 * @date: 2025/2/28 21:46
 */
@Component
public class TestWebSocketAPI extends TextWebSocketHandler {

    /*
    WebSocketSession -- WebSocket 链接中的会话
    TextMessage -- 收到的消息的值具体是啥
    Throwable -- 记录异常信息
    CloseStatus -- 关闭的状态
    */
    //这个方法会在WebSocket链接建立成功后，被自动调用
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        System.out.println("testAPI 链接成功");
    }

    //这个方法是在WebSocket收到消息的时候，被自动调用
    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        System.out.println("testAPI 收到消息" + message.toString());
        //session 是个会话，里面记录了通信双方是谁（session中就记录了Websocket的通信链接）
        session.sendMessage(message);
    }

    //这个方法是在WebSocket链接出现异常的时候，被自动调用
    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        System.out.println("testAPI 出现异常");
    }

    //这个方法是在WebSocket链接进行正常关闭的时候，被自动调用
    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        System.out.println("testAPI 链接关闭");
    }
}
